// 注：这个文件被用于管理项目中所有与“菜单管理模块”有关的接口
import request from '@/utils/request'
import type {
    typeOfResponseDataOfTheApiThatUsedToGetFlagOfAllOfMenuAndButtonPermission,
    typeOfParamsForAddSubMenuOrUpdateMenu,
} from '@/api/acl/menu/type'
// 枚举接口地址↓
enum API {
    // 获取所有菜单和按钮的权限标识时需要用到的接口地址↓
    getFlagOfAllOfMenuAndButtonPermission_URL = '/admin/acl/permission',
    // 添加子菜单的接口地址↓
    AddSubmenuToAMenu_URL = '/admin/acl/permission/save',
    // 更新菜单的接口地址↓
    updateMenu_URL = '/admin/acl/permission/update',
    // 删除菜单的接口地址↓
    deleteMenu_URL = '/admin/acl/permission/remove/',
}
export const requestGetFlagOfAllOfMenuAndButtonPermission = async () => {
    try {
        let response = await request.get<any,typeOfResponseDataOfTheApiThatUsedToGetFlagOfAllOfMenuAndButtonPermission>(API.getFlagOfAllOfMenuAndButtonPermission_URL)
        console.log(response)
        return response
    } catch (error: any) {
        console.error('获取所有菜单和按钮的权限标识失败',error)
    }
}
/**
 * @description 添加子菜单或更新菜单的接口。如果传入的参数中包含ID，则认为是更新菜单；如果不包含ID，则为添加子菜单。
 * @param menuInformation 菜单信息，其中包括了菜单的ID等信息。如果ID为空，则认为是添加子菜单；如果不为空，则为更新菜单信息。
 * @returns 返回一个Promise对象，该对象在被解析成功时包含响应数据，失败时抛出错误。
 */
export const requestAddSubmenuToAMenuOrUpdateAMenu = async(menuInformation:any) => {
    try {
        if (menuInformation.id) {
            let response = await request.put<any, any>(API.AddSubmenuToAMenu_URL, menuInformation)
            console.log(response)
            return response
        } else {
            let response = await request.post<any, any>(API.AddSubmenuToAMenu_URL, menuInformation)
            console.log(response)
            return response
        }
    } catch (error: any) {
        console.error("添加子菜单或更新菜单失败", error)
    }
}
/**
 * @description 删除菜单的接口。通过传入菜单ID，可以执行删除操作。
 * @param menuId 菜单ID，用于标识要删除的菜单。
 * @returns 
 */
export const requestDeleteMenu = async (menuId:number) => {
    try {
        let response = await request.delete<any,any>(API.deleteMenu_URL+menuId)
        console.log(response)
        return response
    } catch (error: any) {
        console.error("删除菜单失败", error)
    }
}